Associative Arrays (Index-By Tables)

Database Tutorials - পিএল/এসকিউএল (PL/SQL) PL/SQL Collections |
188
188

PL/SQL এ Associative Arrays (যাকে আগে Index-By Tables বলা হত) একটি বিশেষ ধরনের Collection Type যা মূলত ডেটাবেসের মধ্যে ডেটাকে key-value pair আকারে সংরক্ষণ করার জন্য ব্যবহৃত হয়। এই ধরনের অ্যারের মধ্যে ডেটা সংরক্ষণ করার সময় আপনি একটি কাস্টম ইনডেক্স ব্যবহার করতে পারেন, যেমন একটি সংখ্যামূলক বা স্ট্রিং টাইপ ইনডেক্স।

Associative Arrays এর বৈশিষ্ট্য:

  • এটি Dynamic Size এর হয়, অর্থাৎ যখন প্রয়োজন হয় তখন নতুন এলিমেন্ট যুক্ত করা বা মুছে ফেলা যেতে পারে।
  • অ্যারে এলিমেন্টগুলোকে এক্সেস করা হয় তাদের Index বা Key এর মাধ্যমে।
  • Index গুলি সাধারণত Integer বা Varchar2 টাইপ হতে পারে।
  • এই অ্যারে গুলোর মধ্যে কোনো নির্দিষ্ট সীমা নেই, যতটুকু মেমরি রয়েছে ততটুকু আকার ধারণ করতে পারে।

Associative Array গঠন:

DECLARE
   -- Associative Array Declaration
   TYPE employee_array IS TABLE OF VARCHAR2(100) INDEX BY BINARY_INTEGER;
   employees employee_array;  -- Declare the array
BEGIN
   -- Inserting values into the associative array
   employees(1) := 'John Doe';
   employees(2) := 'Jane Smith';
   employees(3) := 'Robert Brown';

   -- Retrieving values from the associative array
   DBMS_OUTPUT.PUT_LINE('Employee 1: ' || employees(1));
   DBMS_OUTPUT.PUT_LINE('Employee 2: ' || employees(2));
   DBMS_OUTPUT.PUT_LINE('Employee 3: ' || employees(3));
END;

Associative Array এর ব্যবহার:

  1. Index (Key) দিয়ে ডেটা এক্সেস করা:
    • প্রতিটি এলিমেন্টের জন্য আপনি একটি নির্দিষ্ট Index ব্যবহার করে মান অ্যাক্সেস করতে পারেন। এখানে BINARY_INTEGER হল সেই টাইপ, যা একটি ইনডেক্স হিসেবে কাজ করবে।
  2. Dynamic Size:
    • Associative Array গুলি dynamic size ধারণ করে, তাই আপনি প্রয়োজনমতো যে কোন সংখ্যক এলিমেন্ট অ্যারে তে যোগ বা মুছে ফেলতে পারেন।
  3. Data Types:
    • এটি VARCHAR2, NUMBER সহ বিভিন্ন ডেটা টাইপ ধারণ করতে সক্ষম।

Associative Arrays (Index-By Tables) ব্যবহার করার সুবিধা:

  1. Memory Efficiency:
    • মেমোরির কার্যকর ব্যবহার নিশ্চিত করে। অ্যারে গুলি ডাইনামিক ভাবে বড় হতে পারে এবং ব্যবহারকারী শুধুমাত্র প্রয়োজনীয় ডেটা স্টোর করে রাখে।
  2. Fast Access:
    • Key ভিত্তিক এক্সেসের কারণে দ্রুত ডেটা অনুসন্ধান ও পরিচালনা করা সম্ভব। Index বা Key ব্যবহার করে দ্রুত ডেটা প্রাপ্তি করা যায়।
  3. No Size Limitation:
    • প্ল/এসকিউএল অ্যাসোসিয়েটিভ অ্যারে গুলি সাইজের দিক দিয়ে সীমাবদ্ধ নয়। এটি মেমরি ত্রুটি না হওয়া পর্যন্ত বাড়তে পারে।

Associative Array এর উন্নত উদাহরণ:

DECLARE
   -- Declare an associative array with varchar index
   TYPE employee_data IS TABLE OF VARCHAR2(100) INDEX BY VARCHAR2(20);
   employees employee_data;

BEGIN
   -- Assigning values to the array with string index
   employees('E101') := 'John Doe';
   employees('E102') := 'Jane Smith';
   employees('E103') := 'Robert Brown';

   -- Retrieving values from the associative array
   DBMS_OUTPUT.PUT_LINE('Employee E101: ' || employees('E101'));
   DBMS_OUTPUT.PUT_LINE('Employee E102: ' || employees('E102'));
   DBMS_OUTPUT.PUT_LINE('Employee E103: ' || employees('E103'));
END;

এখানে, অ্যাসোসিয়েটিভ অ্যারেটি VARCHAR2 টাইপের ইনডেক্স ব্যবহার করছে, অর্থাৎ E101, E102 ইত্যাদি স্ট্রিং ভ্যালু হিসেবে ইনডেক্স করা হচ্ছে।


Associative Arrays এর অন্যান্য কার্যাবলী:

  1. EXTEND Method:

    • এটি অ্যারের আকার বাড়ানোর জন্য ব্যবহৃত হয়।
    employees.EXTEND(2);  -- This adds 2 more elements to the array
    
  2. DELETE Method:

    • এটি নির্দিষ্ট একটি ইনডেক্স বা সমস্ত ইনডেক্সের জন্য ডেটা মুছে ফেলার জন্য ব্যবহার করা হয়।
    employees.DELETE(1);  -- Deletes the element at index 1
    employees.DELETE;     -- Deletes all elements in the array
    
  3. COUNT Method:

    • এটি অ্যারেতে মোট কতগুলো উপাদান রয়েছে তা দেখায়।
    DBMS_OUTPUT.PUT_LINE('Number of employees: ' || employees.COUNT);
    
  4. Exists Method:

    • এটি চেক করে যে কোন নির্দিষ্ট ইনডেক্সে কোনো ভ্যালু রয়েছে কিনা।
    IF employees.EXISTS(2) THEN
       DBMS_OUTPUT.PUT_LINE('Employee E102 exists');
    ELSE
       DBMS_OUTPUT.PUT_LINE('Employee E102 does not exist');
    END IF;
    

Associative Arrays এর ব্যবহারিক ক্ষেত্র:

  • Session-based data management: যদি কোন প্রোগ্রামে একাধিক ডেটা সেশন স্তরে ব্যবহৃত হয় তবে অ্যাসোসিয়েটিভ অ্যারে একটি আদর্শ পছন্দ হতে পারে।
  • Temporary data storage: যদি কোনো ডেটাবেসে কোনো প্রকারের তাত্ক্ষণিক ডেটা আপডেট বা সংগ্রহ করার প্রয়োজন হয়, তবে অ্যাসোসিয়েটিভ অ্যারে ব্যবহার করা যেতে পারে।
  • Index-based operations: যখন আপনাকে ডেটার সাথে ইনডেক্স ভিত্তিক এক্সেস করতে হবে, তখন অ্যাসোসিয়েটিভ অ্যারে সাহায্য করে।

সারাংশ:

  • Associative Arrays (বা Index-By Tables) PL/SQL এর একটি বিশেষ ধরনের সংগ্রহ যা key-value pair আকারে ডেটা সংরক্ষণ করে।
  • এটি dynamic size ধারণ করতে পারে, এবং ইনডেক্স ব্যবহার করে দ্রুত ডেটা এক্সেস করা সম্ভব।
  • VARCHAR2 বা BINARY_INTEGER ধরনের ইনডেক্স ব্যবহার করে এক্সেস করা হয়।
  • EXTEND, DELETE, COUNT, এবং EXISTS মত মেথডের মাধ্যমে অ্যারের ডেটা পরিচালনা করা যায়।
Content added By
Promotion